#ifndef LOSU_ARDUINO_LIB_ARDUINO_H
#define LOSU_ARDUINO_LIB_ARDUINO_H

#include "losu.h"
#include "losu_bytecode.h"
#include "losu_dump.h"
#include "losu_gc.h"
#include "losu_mem.h"
#include "losu_object.h"
#include "losu_syntax.h"
#include "losu_vm.h"

// #warning "weak function isn't standard C, make sure your cc support it"
// #define losu_weak_t __attribute__((weak))


int32_t THISarduino_FUNCdigitalRead(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_FUNCdigitalWrite(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_FUNCpinMode(losu_vm_t vm, int32_t argc, losu_object argv[]);
losu_object THISarduino_CLASSSerial(losu_vm_t vm);

int32_t THISarduino_CLASSSerial_constructor(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCsetTimeout(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCread(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCavailable(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCparseInt(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCpeek(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCprint(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCreadStringUntil(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCprintln(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCfind(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCend(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCparseFloat(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCreadBytes(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCreadBytesUntil(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCreadString(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCbegin(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCflush(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_CLASSSerial_FUNCwrite(losu_vm_t vm, int32_t argc, losu_object argv[]);
int32_t THISarduino_FUNCdelay(losu_vm_t vm, int32_t argc, losu_object argv[]);


#endif
